


import bpy

from 节点.全局控制.Node.节点和插座基类 import bl_节点基类
from 节点.全局控制.Node.数据编辑.物体 import bl_修改器公共选项

import Core.bl_UI配色 as UI配色

import engine.initLIB.load_dll as engineLib
import ctypes


from bpy.types import Operator

from 全局控制.Node.节点数据类型 import bl_集合数据类型




engineLib.flexCAPI.f_创建移除修改器节点.restype = ctypes.c_bool






class C_ops_移除物体修改器(bpy.types.Operator):
	bl_idname = 'node.update_node_remove_modifier'
	bl_label = '移除物体修改器'
	#bl_options = {'REGISTER', 'UNDO'}
	
	m_节点树ID名称 = bpy.props.StringProperty(name='节点树ID名称', default='')
	m_节点ID名称 = bpy.props.StringProperty(name='节点ID名称', default='')
	
	def execute(self, context):
		node_group = bpy.data.node_groups[self.m_节点树ID名称]
		node = node_group.nodes[self.m_节点ID名称]
		
		if node :
			node.f_update()
		return {'FINISHED'}




class C_Node_移除修改器(bl_节点基类.C_Node_基类):
	bl_dname = 'bl_node_移除修改器'
	bl_label = '移除修改器'

	m_修改器名称 = bpy.props.StringProperty(name="修改器名称", default='')
	def init(self, context):
		super(C_Node_移除修改器, self).f_init(context)
		self.inputs.new('C_Socket_物体_Array1D', name='物体')
		
	def draw_buttons(self, context, layout):
		显示选项布局 = layout.row(align=True)
		layout.prop(self, 'm_修改器名称')

		opera = layout.operator("node.update_node_remove_modifier")
		opera.m_节点树ID名称 = self.id_data.name
		opera.m_节点ID名称 = self.name

	def f_toCPP(self):
		是否更新 = engineLib.flexCAPI.f_创建移除修改器节点(ctypes.c_wchar_p(self.id_data.name), ctypes.c_wchar_p(self.name), self.f_getPyObject());
		if 是否更新 :
			pass

	def f_update(self):
		objs = self.inputs['物体'].f_getData()

		for obj in objs:
			修改器ID = obj.modifiers.find(self.m_修改器名称)
			if 修改器ID >= 0 :
				修改器 = obj.modifiers[修改器ID]
				obj.modifiers.remove(修改器)
			




class C_NODE_MENU_移除修改器(bpy.types.Operator):
	bl_idname = 'node.global_node_obj_remove_modifier'
	bl_label = '移除修改器'
	bl_options = {'REGISTER', 'UNDO'}
	def execute(operator, context):
		bpy.ops.node.add_node(type='C_Node_移除修改器', use_transform=True)
		return {'FINISHED'}





classes = (
	C_ops_移除物体修改器,


	C_Node_移除修改器,
	C_NODE_MENU_移除修改器,
	
)

def register():
	for c in classes:
		bpy.utils.register_class(c)
		
def unregister():
	for c in classes:
		bpy.utils.unregister_class(c)





